//
//  P1060.cpp
//  Algorithm
//
//  Created by 刘锦程 on 2023/9/15.
//

#include <stdio.h>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m;
int wight[27];
int value[27];
int dp[10003];
int P1060ans(){
    int flag=0;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d",&wight[i]);
        scanf("%d",&value[i]);
    }
    for(int i=0;i<=n;i++) dp[i]=0;
    for(int i=1;i<=m;i++){
        for(int j=n;j>=wight[i];j--){
                dp[j]=max(dp[j],(dp[j-wight[i]]+value[i]*wight[i]));
            }
        }
    
    
    cout<<dp[m]<<endl;
   
    return 0;
}

